home *** CD-ROM | disk | FTP | other *** search
- ;Date: 19-Feb-87 20:32 CST
- ;From: Bill Kramer
- ;Subj: Duct.LSP now rocks in 2.52!
-
- ;=====================================================
- ;
- ; Revised 2/87 Bill Kramer
- ;
- ; Revision for operation under AutoLISP 1.2 (ACAD 2.5+)
- ; Changes to original code in lower case.
- ;
- ; Original input of second point works for ACAD version 2.18
- ; which "tricked" AutoLISP into the rubberband.
- ;
- ; Additional features added:
- ; Uses upper or lower case.
- ; Shows Centerline of ductwork with GRDRAW which will
- ; vanish when REDRAW is executed.
- ;
- ;DUCT PROGRAM
- (DEFUN LRG ()
- ; (COMMAND "DIST" P1) (GETPOINT "\nENTER NEXT POINT :")
- ; (COMMAND)
- ; (SETQ P2 (GETVAR "LASTPOINT"))
- (setq p2 (getpoint p1 "\nEnter next point:"))
- (SETQ ZD1 (+ (ANGLE P1 P2) 0.26179938))
- (SETQ ZD2 (- (ANGLE P1 P2) 0.26179938))
- (SETQ W2B (* WW 0.5))
- (SETQ WD (- W2B W2))
- (SETQ Z (+ (ANGLE P1 P2) 1.57079633))
- (SETQ P2A (POLAR P2 (+ Z 3.14159265) W2B))
- (SETQ P2B (POLAR P2A Z WW))
- (SETQ P1D (POLAR P1B ZD1 (/ WD (SIN 0.26179938))))
- (SETQ P1C (POLAR P1A ZD2 (/ WD (SIN 0.26179938))))
- (COMMAND "LINE" P1B P1D P1C P1A "")
- ; (COMMAND "")
- (SETQ P1 (POLAR P1C Z W2B))
- (SETQ P1A P1C)
- (SETQ P1B P1D)
- (SETQ W2 W2B)
- (SETQ W WW))
-
- (DEFUN SML ()
- ; (COMMAND "DIST" P1) (GETPOINT "\nENTER NEXT POINT :")
- ; (COMMAND)
- ; (SETQ P2 (GETVAR "LASTPOINT"))
- (setq p2 (getpoint p1 "\nEnter next point"))
- (SETQ ZD1 (+ (ANGLE P1 P2) 0.26179938))
- (SETQ ZD2 (- (ANGLE P1 P2) 0.26179938))
- (SETQ W2B (* WW 0.5))
- (SETQ Z (+ (ANGLE P1 P2) 1.57079633))
- (SETQ WD (- W2 W2B))
- (SETQ P2A (POLAR P2 (+ Z 3.14159265) W2B))
- (SETQ P2B (POLAR P2A Z WW))
- (SETQ P1D (POLAR P1B ZD2 (/ WD (SIN 0.26179938))))
- (SETQ P1C (POLAR P1A ZD1 (/ WD (SIN 0.26179938))))
- (COMMAND "LINE" P1B P1D P1C P1A "")
- ; (COMMAND "")
- (SETQ P1 (POLAR P1C Z W2B))
- (SETQ P1A P1C)
- (SETQ P1B P1D)
- (SETQ W2 W2B)
- (SETQ W WW))
-
- (DEFUN WIDE ()
- (SETQ Z (+ (ANGLE P1 P2) 1.57079633))
- (SETQ P2A (POLAR P2 (+ Z 3.14159265) W2))
- (SETQ P2B (POLAR P2A Z W))
- (COMMAND "LINE" P1A P2A "")
- ; (COMMAND "")
- (COMMAND "LINE" P1B P2B P2A "")
- ; (COMMAND "")
- (SETQ P1 P2)
- (SETQ P1A P2A)
- (SETQ P1B P2B)
- (SETVAR "BLIPMODE" 0)
- (SETQ WW (GETREAL "\nNEXT DUCT WIDTH: "))
- (IF (< WW W) (SML))
- (IF (> WW W) (LRG))
- ; (COMMAND "REDRAW")
- )
- (DEFUN TURN ()
- ; (COMMAND "DIST" P2) (GETPOINT "\nENTER NEXT POINT :")
- ; (COMMAND)
- ; (SETQ P3 (GETVAR "LASTPOINT"))
- (grdraw p1 p2 -1)
- (setq p3 (getpoint p2 "\nEnter next point:"))
- (grdraw p1 p2 -1)
- (SETQ Z1 (ANGLE P2 P1))
- (SETQ Z1X (ANGLE P1 P2))
- (SETQ Z2 (ANGLE P2 P3))
- (SETQ Z2X (+ (* (+ Z1 Z2) 0.5) 3.14159265))
- (SETQ P2B (POLAR P2 Z2X (/ W2 (SIN (- Z2X Z1X)))))
- (COMMAND "LINE" P1B P2B "")
- ; (COMMAND "")
- (SETQ P2A (POLAR P2 Z2X (* (/ W2 (SIN (- Z2X Z1X))) -1)))
- (COMMAND "LINE" P1A P2A "")
- ; (COMMAND "")
- (SETQ D (/ W 8))
- ; (SETQ A (ANGTOS Z2X 1 1))
- (setq A (/ (* Z2X 180.0) pi))
- (COMMAND "INSERT" "VAIN" P2 D "1" A)
- (SETQ P1 P2)
- (SETQ P1A P2A)
- (SETQ P1B P2B)
- (SETQ P2 P3)
- )
-
- (DEFUN C:DUCT ()
- (SETVAR "CMDECHO" 0)
- (SETQ W (GETREAL "\nPICK DUCT WIDTH: "))
- (SETQ W2 (* W 0.5))
- (SETQ P1 (GETPOINT "\nENTER BEGINNING OF CENTERLINE: "))
- ; (COMMAND "DIST" P1) (GETPOINT "\nENTER END OF CENTERLINE: ")
- ; (COMMAND)
- ; (SETQ P2 (GETVAR "LASTPOINT"))
- (setq p2 (getpoint p1 "\nEnter end of Centerline:"))
- (SETQ Z (+ (ANGLE P1 P2) 1.57079633))
- (SETQ P1A (POLAR P1 (+ Z 3.14159265) W2))
- (SETQ P1B (POLAR P1A Z W))
- (SETQ L T)
- (WHILE L
- (grdraw p1 p2 2)
- (setq test (strcase
- (GETSTRING "\nIS DIRECTION <S>traight or <T>urn <Q>uit ")))
- (IF (EQUAL TEST "S") (WIDE))
- (IF (EQUAL TEST "T") (TURN))
- (IF (EQUAL TEST "Q") (SETQ L NIL)))
- (COMMAND "LINE" P1A P2A P2B P1B "")
- ; (COMMAND "")
- ; (CLEAN ATOMLIST)
- (redraw)
- )